/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package telsoft.cms_admin.util;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author TiepND
 */
public class Util {

    public static String convertDate(Date strDate) throws Exception {
        try {
            if (strDate != null) {
                SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");

                return df.format(strDate);
            } else {
                return "";
            }
        } catch (Exception e) {
            throw new Exception("Format date error");
        }
    }

    public static String nvl(Object objInput, String strNullValue) {
        if (objInput == null) {
            return strNullValue;
        }
        return objInput.toString();
    }
     public static Date toDate(String strSource)
  {
    return toDate(strSource, DateFormat.getDateInstance());
  }

  public static Date toDate(String strSource, String strFormat)
  {
    SimpleDateFormat fmt = new SimpleDateFormat(strFormat);
    return toDate(strSource, fmt);
  }

  public static Date toDate(String strSource, DateFormat fmt)
  {
    try
    {
      fmt.setLenient(false);
      return fmt.parse(strSource);
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
    return null;
  }
//  public static Object performAction(Class<?> className, String methodName, Object[] args)
//    throws Exception
//  {
//    Object object = new Object();
//    Method[] methods = className.getMethods();
//    try {
//      for (Method method : methods) {
//        if (!method.getName().equals(methodName)) continue;
//        try {
//          method.setAccessible(true);
//          object = method.invoke(className.newInstance(), args);
//        }
//        catch (InvocationTargetException ex) {
//          Throwable cause = ex.getCause();
////          ResourceBundleUtil bundle = new ResourceBundleUtil("PP_ORAMSG");
//          String strORAMSG = cause.getMessage();
//          String strMSGContent = "";
//          if (strORAMSG.contains("ORA-"))
//          {
//            Pattern p = Pattern.compile("ORA-\\d+");
//            Matcher m = p.matcher(strORAMSG);
//            while (m.find()) {
//              strORAMSG = m.group();
//            }
//
//            try
//            {
////              strMSGContent = bundle.getAMObjectAsString(strORAMSG);
//            } catch (Exception ext) {
////              SystemLogger.getLogger().error(cause.getMessage());
//              throw new Exception(ext);
//            }
//            throw new Exception(strORAMSG, strMSGContent, cause);
//          }
//          throw new Exception("ERR", cause.getMessage(), cause);
//        }
//      }
//    }
//    catch (InstantiationException iex) {
////      SystemLogger.getLogger().error(iex);
//      throw new Exception(iex);
//    } catch (IllegalAccessException iaex) {
////      SystemLogger.getLogger().error(iaex);
//      throw new Exception(iaex);
//    }
//    return object;
//  }
//
//  public static List getData(Class<?> className, String methodName, Object[] args) throws Exception
//  {
//    return (List)performAction(className, methodName, args);
//  }
//
//  public static String getStringData(Class<?> className, String methodName, Object[] args) throws Exception {
//    return (String)performAction(className, methodName, args);
//  }
//
//  public static List getData(Class<?> className, String methodName) throws Exception {
//    return getData(className, methodName, new Object[0]);
//  }
}
